package com.mallcai.bigdata.ladon.dpl.entity.report;

import com.mallcai.bigdata.ladon.dpl.annotation.Creator;
import com.mallcai.bigdata.ladon.dpl.annotation.SortId;
import com.mallcai.bigdata.ladon.dpl.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author gst
 * @date 2019-12-30 20:36
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class Report extends BaseEntity {
    /**
     * 报表编码全局唯一
     */
    private String  code;
    /**
     * 报表名称
     */
    private String  name;
    /**
     * 报表类型, 1 - 表格; 2 - 图表; 3 - xxx等
     */
    private String  type;
    /**
     * 图表显示时, x轴列名; 多个以";"隔开
     */
    private String  xAxis;
    /**
     * 图表显示时,y轴列名; 多个以";"隔开
     */
    private String  yAxis;
    /**
     * 报表图标
     */
    private String  icon;
    /**
     * 报表详情查询Id
     */
    private Long    detailSqlId;
    /**
     * 报表合计查询Id
     */
    private Long    countSqlId;
    /**
     * 查询字段标签显示长度
     */
    private Integer queryFieldLabelLen;
    /**
     * 查询字段控件显示长度
     */
    private Integer queryFieldMediaLen;
    /**
     * 简单报表, 用于LOV等一些简单查询
     */
    private Integer simpleReport;
    /**
     * 静态的报表 0 - 否; 1 - 是;
     */
    private Integer statical;
    /**
     * 流量开关
     */
    private Integer flowSwitch;
    /**
     * 排序Id
     */
    @SortId
    private Long    sortId;
    /**
     * 描述信息
     */
    private String  comment;
    /**
     * 负责人
     */
    @Creator
    private Long    owner;

    // 扩展字段
    /**
     * 自动生成code
     */
    private Integer autoCreatedCode;
    /**
     * 负责人名称
     */
    private String  ownerName;

    private String       groupNameStr;
    private List<String> groupNames;
    private String       groupIdStr;
    private List<Long>   groupIds;


    public void setGroupNameStr(String val) {
        this.groupNameStr = val;
        if (StringUtils.isNotBlank(val)) {
            String[] tmps = StringUtils.split(val, ",");
            this.groupNames = Arrays.asList(tmps);
        }
    }

    public void setGroupIdStr(String val) {
        this.groupIdStr = val;
        if (StringUtils.isNotBlank(val)) {
            String[] tmps = StringUtils.split(val, ",");
            List<Long> ids = new ArrayList<>();
            for (String tmp : tmps) {
                ids.add(Long.valueOf(tmp));
            }
            this.groupIds = ids;
        }
    }
}
